/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ged;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Link</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link ged.Link#getLabel <em>Label</em>}</li>
 *   <li>{@link ged.Link#getLineShape <em>Line Shape</em>}</li>
 *   <li>{@link ged.Link#getSourceDecoration <em>Source Decoration</em>}</li>
 *   <li>{@link ged.Link#getTargetDecoration <em>Target Decoration</em>}</li>
 *   <li>{@link ged.Link#getSourceLabel <em>Source Label</em>}</li>
 *   <li>{@link ged.Link#getTargetLabel <em>Target Label</em>}</li>
 *   <li>{@link ged.Link#getConnection_lineType <em>Connection line Type</em>}</li>
 *   <li>{@link ged.Link#getLine_target_decoration <em>Line target decoration</em>}</li>
 *   <li>{@link ged.Link#getLine_source_decoration <em>Line source decoration</em>}</li>
 *   <li>{@link ged.Link#getShape_of_connection <em>Shape of connection</em>}</li>
 *   <li>{@link ged.Link#getConn_linewidth <em>Conn linewidth</em>}</li>
 *   <li>{@link ged.Link#getFont_color <em>Font color</em>}</li>
 *   <li>{@link ged.Link#getFont <em>Font</em>}</li>
 *   <li>{@link ged.Link#getSource <em>Source</em>}</li>
 *   <li>{@link ged.Link#getTarget <em>Target</em>}</li>
 * </ul>
 * </p>
 *
 * @see ged.GedPackage#getLink()
 * @model annotation="gmf.link label='label' source='source' target='target'"
 * @generated
 */
public interface Link extends EObject
{
  /**
   * Returns the value of the '<em><b>Label</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Label</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Label</em>' attribute.
   * @see #setLabel(String)
   * @see ged.GedPackage#getLink_Label()
   * @model
   * @generated
   */
  String getLabel();

  /**
   * Sets the value of the '{@link ged.Link#getLabel <em>Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Label</em>' attribute.
   * @see #getLabel()
   * @generated
   */
  void setLabel(String value);

  /**
   * Returns the value of the '<em><b>Line Shape</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Line Shape</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Line Shape</em>' attribute.
   * @see #setLineShape(String)
   * @see ged.GedPackage#getLink_LineShape()
   * @model
   * @generated
   */
  String getLineShape();

  /**
   * Sets the value of the '{@link ged.Link#getLineShape <em>Line Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Line Shape</em>' attribute.
   * @see #getLineShape()
   * @generated
   */
  void setLineShape(String value);

  /**
   * Returns the value of the '<em><b>Source Decoration</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source Decoration</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source Decoration</em>' attribute.
   * @see #setSourceDecoration(String)
   * @see ged.GedPackage#getLink_SourceDecoration()
   * @model
   * @generated
   */
  String getSourceDecoration();

  /**
   * Sets the value of the '{@link ged.Link#getSourceDecoration <em>Source Decoration</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source Decoration</em>' attribute.
   * @see #getSourceDecoration()
   * @generated
   */
  void setSourceDecoration(String value);

  /**
   * Returns the value of the '<em><b>Target Decoration</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target Decoration</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target Decoration</em>' attribute.
   * @see #setTargetDecoration(String)
   * @see ged.GedPackage#getLink_TargetDecoration()
   * @model
   * @generated
   */
  String getTargetDecoration();

  /**
   * Sets the value of the '{@link ged.Link#getTargetDecoration <em>Target Decoration</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target Decoration</em>' attribute.
   * @see #getTargetDecoration()
   * @generated
   */
  void setTargetDecoration(String value);

  /**
   * Returns the value of the '<em><b>Source Label</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source Label</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source Label</em>' attribute.
   * @see #setSourceLabel(String)
   * @see ged.GedPackage#getLink_SourceLabel()
   * @model
   * @generated
   */
  String getSourceLabel();

  /**
   * Sets the value of the '{@link ged.Link#getSourceLabel <em>Source Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source Label</em>' attribute.
   * @see #getSourceLabel()
   * @generated
   */
  void setSourceLabel(String value);

  /**
   * Returns the value of the '<em><b>Target Label</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target Label</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target Label</em>' attribute.
   * @see #setTargetLabel(String)
   * @see ged.GedPackage#getLink_TargetLabel()
   * @model
   * @generated
   */
  String getTargetLabel();

  /**
   * Sets the value of the '{@link ged.Link#getTargetLabel <em>Target Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target Label</em>' attribute.
   * @see #getTargetLabel()
   * @generated
   */
  void setTargetLabel(String value);

  /**
   * Returns the value of the '<em><b>Connection line Type</b></em>' attribute.
   * The literals are from the enumeration {@link ged.LineType}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Connection line Type</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Connection line Type</em>' attribute.
   * @see ged.LineType
   * @see #setConnection_lineType(LineType)
   * @see ged.GedPackage#getLink_Connection_lineType()
   * @model
   * @generated
   */
  LineType getConnection_lineType();

  /**
   * Sets the value of the '{@link ged.Link#getConnection_lineType <em>Connection line Type</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Connection line Type</em>' attribute.
   * @see ged.LineType
   * @see #getConnection_lineType()
   * @generated
   */
  void setConnection_lineType(LineType value);

  /**
   * Returns the value of the '<em><b>Line target decoration</b></em>' attribute.
   * The literals are from the enumeration {@link ged.LineEndDecoration}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Line target decoration</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Line target decoration</em>' attribute.
   * @see ged.LineEndDecoration
   * @see #setLine_target_decoration(LineEndDecoration)
   * @see ged.GedPackage#getLink_Line_target_decoration()
   * @model
   * @generated
   */
  LineEndDecoration getLine_target_decoration();

  /**
   * Sets the value of the '{@link ged.Link#getLine_target_decoration <em>Line target decoration</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Line target decoration</em>' attribute.
   * @see ged.LineEndDecoration
   * @see #getLine_target_decoration()
   * @generated
   */
  void setLine_target_decoration(LineEndDecoration value);

  /**
   * Returns the value of the '<em><b>Line source decoration</b></em>' attribute.
   * The literals are from the enumeration {@link ged.LineEndDecoration}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Line source decoration</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Line source decoration</em>' attribute.
   * @see ged.LineEndDecoration
   * @see #setLine_source_decoration(LineEndDecoration)
   * @see ged.GedPackage#getLink_Line_source_decoration()
   * @model
   * @generated
   */
  LineEndDecoration getLine_source_decoration();

  /**
   * Sets the value of the '{@link ged.Link#getLine_source_decoration <em>Line source decoration</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Line source decoration</em>' attribute.
   * @see ged.LineEndDecoration
   * @see #getLine_source_decoration()
   * @generated
   */
  void setLine_source_decoration(LineEndDecoration value);

  /**
   * Returns the value of the '<em><b>Shape of connection</b></em>' attribute.
   * The literals are from the enumeration {@link ged.ConnectionShapes}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Shape of connection</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Shape of connection</em>' attribute.
   * @see ged.ConnectionShapes
   * @see #setShape_of_connection(ConnectionShapes)
   * @see ged.GedPackage#getLink_Shape_of_connection()
   * @model
   * @generated
   */
  ConnectionShapes getShape_of_connection();

  /**
   * Sets the value of the '{@link ged.Link#getShape_of_connection <em>Shape of connection</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Shape of connection</em>' attribute.
   * @see ged.ConnectionShapes
   * @see #getShape_of_connection()
   * @generated
   */
  void setShape_of_connection(ConnectionShapes value);

  /**
   * Returns the value of the '<em><b>Conn linewidth</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Conn linewidth</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Conn linewidth</em>' reference.
   * @see #setConn_linewidth(LineWidth)
   * @see ged.GedPackage#getLink_Conn_linewidth()
   * @model
   * @generated
   */
  LineWidth getConn_linewidth();

  /**
   * Sets the value of the '{@link ged.Link#getConn_linewidth <em>Conn linewidth</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Conn linewidth</em>' reference.
   * @see #getConn_linewidth()
   * @generated
   */
  void setConn_linewidth(LineWidth value);

  /**
   * Returns the value of the '<em><b>Font color</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Font color</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Font color</em>' reference.
   * @see #setFont_color(Color)
   * @see ged.GedPackage#getLink_Font_color()
   * @model
   * @generated
   */
  Color getFont_color();

  /**
   * Sets the value of the '{@link ged.Link#getFont_color <em>Font color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Font color</em>' reference.
   * @see #getFont_color()
   * @generated
   */
  void setFont_color(Color value);

  /**
   * Returns the value of the '<em><b>Font</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Font</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Font</em>' reference.
   * @see #setFont(Font)
   * @see ged.GedPackage#getLink_Font()
   * @model
   * @generated
   */
  Font getFont();

  /**
   * Sets the value of the '{@link ged.Link#getFont <em>Font</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Font</em>' reference.
   * @see #getFont()
   * @generated
   */
  void setFont(Font value);

  /**
   * Returns the value of the '<em><b>Source</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source</em>' reference.
   * @see #setSource(Node)
   * @see ged.GedPackage#getLink_Source()
   * @model
   * @generated
   */
  Node getSource();

  /**
   * Sets the value of the '{@link ged.Link#getSource <em>Source</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source</em>' reference.
   * @see #getSource()
   * @generated
   */
  void setSource(Node value);

  /**
   * Returns the value of the '<em><b>Target</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target</em>' reference.
   * @see #setTarget(Node)
   * @see ged.GedPackage#getLink_Target()
   * @model
   * @generated
   */
  Node getTarget();

  /**
   * Sets the value of the '{@link ged.Link#getTarget <em>Target</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target</em>' reference.
   * @see #getTarget()
   * @generated
   */
  void setTarget(Node value);

} // Link
